package com.luzh.myspring.beans.factory.config;

import com.luzh.myspring.beans.factory.HierarchicalBeanFactory;
import com.luzh.myspring.core.convert.ConversionService;
import com.luzh.myspring.util.StringValueResolver;
import com.sun.istack.internal.Nullable;

/**
 * 可配置的容器
 */
public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {

    String SCOPE_SINGLETON = "singleton";

    String SCOPE_PROTOTYPE = "prototype";

    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);

    void addEmbeddedValueResolver(StringValueResolver valueResolver);

    String resolveEmbeddedValue(String value);

    void setConversionService(ConversionService conversionService);

    @Nullable
    ConversionService getConversionService();

}
